package com.ngmaster.socket.message;

import com.ngmaster.socket.ProtocolMessage;

import java.util.Arrays;

/**
 * 绑定套餐
 *用于客户选定套餐类型后，将套餐值下发给该电脑板。
 * 接收应答一致：
 * 工作模式：1byte
 *      0：流量模式
 *      1：时间模式
 * 滤芯最大值：
 *      根据使用流量记录滤芯值
 *      第一级滤芯最大值：2byte
 *      第二级滤芯最大值：2byte
 *      第三级滤芯最大值：2byte
 *      第四级滤芯最大值：2byte
 *      第五级滤芯最大值：2byte
 */
public class BindPricingMessage extends ProtocolMessage {

    private byte gzms; // 工作模式
    private short dyijlxzdz; // 第一级滤芯最大值
    private short derjlxzdz; // 第二级滤芯最大值
    private short dsanjlxzdz; // 第三级滤芯最大值
    private short dsijlxzdz; // 第四级滤芯最大值
    private short dwujlxzdz; // 第无级滤芯最大值


    public byte getGzms() {
        return gzms;
    }

    public void setGzms(byte gzms) {
        this.gzms = gzms;
    }

    public short getDyijlxzdz() {
        return dyijlxzdz;
    }

    public void setDyijlxzdz(short dyijlxzdz) {
        this.dyijlxzdz = dyijlxzdz;
    }

    public short getDerjlxzdz() {
        return derjlxzdz;
    }

    public void setDerjlxzdz(short derjlxzdz) {
        this.derjlxzdz = derjlxzdz;
    }

    public short getDsanjlxzdz() {
        return dsanjlxzdz;
    }

    public void setDsanjlxzdz(short dsanjlxzdz) {
        this.dsanjlxzdz = dsanjlxzdz;
    }

    public short getDsijlxzdz() {
        return dsijlxzdz;
    }

    public void setDsijlxzdz(short dsijlxzdz) {
        this.dsijlxzdz = dsijlxzdz;
    }

    public short getDwujlxzdz() {
        return dwujlxzdz;
    }

    public void setDwujlxzdz(short dwujlxzdz) {
        this.dwujlxzdz = dwujlxzdz;
    }

    @Override
    public void onSerial() {
        this.byteArray.writeByte(this.gzms);
        this.byteArray.writeShort(this.dyijlxzdz);
        this.byteArray.writeShort(this.derjlxzdz);
        this.byteArray.writeShort(this.dsanjlxzdz);
        this.byteArray.writeShort(this.dsijlxzdz);
        this.byteArray.writeShort(this.dwujlxzdz);
    }

    @Override
    public void onDeserialize() {
        this.gzms = this.byteArray.readByte();
        this.dyijlxzdz = this.byteArray.readShort();
        this.derjlxzdz = this.byteArray.readShort();
        this.dsanjlxzdz = this.byteArray.readShort();
        this.dsijlxzdz = this.byteArray.readShort();
        this.dwujlxzdz = this.byteArray.readShort();
    }

    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder("BindPricingMessage{");
        sb.append("gzms=").append(gzms);
        sb.append(", dyijlxzdz=").append(dyijlxzdz);
        sb.append(", derjlxzdz=").append(derjlxzdz);
        sb.append(", dsanjlxzdz=").append(dsanjlxzdz);
        sb.append(", dsijlxzdz=").append(dsijlxzdz);
        sb.append(", dwujlxzdz=").append(dwujlxzdz);
        sb.append(", imeiBytes=").append(Arrays.toString(imeiBytes));
        sb.append(", imei='").append(imei).append('\'');
        sb.append(", cmd=").append(cmd);
        sb.append(", dataLength=").append(dataLength);
        sb.append(", crc=").append(crc);
        sb.append(", crcHex='").append(crcHex).append('\'');
        sb.append(", byteArray=").append(byteArray);
        sb.append('}');
        return sb.toString();
    }
}
